#include<iostream>
using namespace std;
class SeqList {
private:
	int* list;
	int size;
	int maxsize;
public:
	SeqList() {
		size = 0;
		maxsize = 1000;
		list = new int[maxsize];
	}
	void Init(int n, int* a) {
		for (int i = 0; i < 2 * n; i++) {
			list[i] = a[i];
			if (i % 2) {
				size++;
			}
		}
	}
	SeqList& operator+(SeqList& sl) {
		SeqList* qSL = new SeqList;
		int x = 0;
		int y = 0;
		while (x < size && y < sl.size) {
			if (list[2 * x + 1] < sl.list[2 * y + 1]) {
				qSL->list[2 * qSL->size] = list[2 * x];
				qSL->list[2 * qSL->size + 1] = list[2 * x + 1];
				x++;
				qSL->size++;
			}
			else if (list[2 * x + 1] == sl.list[2 * y + 1]) {
				qSL->list[2 * qSL->size] = list[2 * x] + sl.list[2 * y];
				qSL->list[2 * qSL->size + 1] = list[2 * x + 1];
				x++;
				y++;
				qSL->size++;
			}
			else {
				qSL->list[2 * qSL->size] = sl.list[2 * y];
				qSL->list[2 * qSL->size + 1] = sl.list[2 * y + 1];
				y++;
				qSL->size++;
			}
		}
		while (x < size) {
			qSL->list[2 * qSL->size] = list[2 * x];
			qSL->list[2 * qSL->size + 1] = list[2 * x + 1];
			x++;
			qSL->size++;
		}
		while (y < sl.size) {
			qSL->list[2 * qSL->size] = sl.list[2 * y];
			qSL->list[2 * qSL->size + 1] = sl.list[2 * y + 1];
			y++;
			qSL->size++;
		}
		return *qSL;
	}
	void print() {
		for (int i = 0; i < size; i++) {
			if (list[2 * i]>0) {
				cout << list[2 * i];
				if (list[2 * i + 1] > 0) {
					cout << "x^" << list[2 * i + 1];
				}
				if (list[2 * i + 1] < 0) {
					cout << "x^(" << list[2 * i + 1] << ')';
				}
				int m = 0;
				for (int k = i + 1; k < size; k++) {
					if (list[2 * k]) {
						m = 1;
						break;
					}
				}
				if (m) {
					cout << " + ";
				}
			}
			if (list[2 * i] < 0) {
				cout << '(' << list[2 * i] << ')';
				if (list[2 * i + 1] > 0) {
					cout << "x^" << list[2 * i + 1];
				}
				if (list[2 * i + 1] < 0) {
					cout << "x^(" << list[2 * i + 1] << ')';
				}
				int m = 0;
				for (int k = i + 1; k < size; k++) {
					if (list[2 * k]) {
						m = 1;
						break;
					}
				}
				if (m) {
					cout << " + ";
				}
			}
		}
		cout << endl;
	}
	~SeqList() {
		delete[] list;
	}
};
int main()
{
	int n1;
	cin >> n1;
	for (int i = 0; i < n1; i++) {
		int n2;
		cin >> n2;
		int* a1 = new int[2 * n2];
		for (int j = 0; j < 2 * n2; j++) {
			cin >> a1[j];
		}
		SeqList sl1;
		sl1.Init(n2, a1);
		sl1.print();
		cin >> n2;
		int* a2 = new int[2 * n2];
		for (int j = 0; j < 2 * n2; j++) {
			cin >> a2[j];
		}
		SeqList sl2;
		sl2.Init(n2, a2);
		sl2.print();
		(sl1 + sl2).print();
	}
	return 0;
}